<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database rows serialization</span> benchmarks run at 06/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize the first row from each table in the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a><strong>100,000</strong> Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>4097</td><th>4.68x</th><td>23278382</td><td>64671682</td><td>87950064</td><td>879.5006</td><th>7.16x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1958</td><th>2.24x</th><td>41261251</td><td>100646375</td><td>141907626</td><td>1419.0763</td><th>11.55x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>4927</td><th>5.62x</th><td>60960600</td><td>53886579</td><td>114847179</td><td>1148.4718</td><th>9.35x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>2014</td><th>2.30x</th><td>30208514</td><td>76210839</td><td>106419353</td><td>1064.1935</td><th>8.66x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>876</td><th>1x</th><td>6194428</td><td>6088768</td><td>12283196</td><td>122.8320</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>1560</td><th>1.78x</th><td>15134454</td><td>9916418</td><td>25050872</td><td>250.5087</td><th>2.04x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 100,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>275</td><th>4.74x</th><td>1555323</td><td>4210010</td><td>5765333</td><td>57.6533</td><th>7.25x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>95</td><th>1.64x</th><td>2794997</td><td>5835653</td><td>8630650</td><td>86.3065</td><th>10.85x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>329</td><th>5.67x</th><td>3960083</td><td>3852114</td><td>7812197</td><td>78.1220</td><th>9.82x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>110</td><th>1.90x</th><td>1609852</td><td>4393283</td><td>6003135</td><td>60.0314</td><th>7.55x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>58</td><th>1x</th><td>412753</td><td>382598</td><td>795351</td><td>7.9535</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>87</td><th>1.5x</th><td>1030101</td><td>469596</td><td>1499697</td><td>14.9970</td><th>1.89x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 100,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>482</td><th>3.74x</th><td>2630792</td><td>7917931</td><td>10548723</td><td>105.4872</td><th>6.14x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>256</td><th>1.98x</th><td>3962914</td><td>13088389</td><td>17051303</td><td>170.5130</td><th>9.92x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>635</td><th>4.92x</th><td>7503271</td><td>6464748</td><td>13968019</td><td>139.6802</td><th>8.13x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>271</td><th>2.10x</th><td>3112914</td><td>6324333</td><td>9437247</td><td>94.3725</td><th>5.49x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>129</td><th>1x</th><td>785018</td><td>933499</td><td>1718517</td><td>17.1852</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>202</td><th>1.57x</th><td>1281998</td><td>1140891</td><td>2422889</td><td>24.2289</td><th>1.41x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 100,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>851</td><th>2.43x</th><td>3747815</td><td>9364248</td><td>13112063</td><td>131.1206</td><th>4.07x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>598</td><th>1.71x</th><td>7054678</td><td>18259227</td><td>25313905</td><td>253.1390</td><th>7.86x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1092</td><th>3.12x</th><td>12420060</td><td>8959305</td><td>21379365</td><td>213.7936</td><th>6.64x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>607</td><th>1.73x</th><td>6862528</td><td>17334024</td><td>24196552</td><td>241.9655</td><th>7.51x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>350</td><th>1x</th><td>1522784</td><td>1698189</td><td>3220973</td><td>32.2097</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>495</td><th>1.41x</th><td>3807806</td><td>2497495</td><td>6305301</td><td>63.0530</td><th>1.96x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 100,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>233</td><th>12.94x</th><td>1505060</td><td>4703460</td><td>6208520</td><td>62.0852</td><th>12.56x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>2.11x</th><td>2803334</td><td>6128577</td><td>8931911</td><td>89.3191</td><th>18.08x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>234</td><th>13x</th><td>3265900</td><td>3429031</td><td>6694931</td><td>66.9493</td><th>13.55x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>53</td><th>2.94x</th><td>1650243</td><td>3209664</td><td>4859907</td><td>48.5991</td><th>9.84x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>18</td><th>1x</th><td>352118</td><td>142010</td><td>494128</td><td>4.9413</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>43</td><th>2.39x</th><td>731841</td><td>326717</td><td>1058558</td><td>10.5856</td><th>2.14x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 100,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>282</td><th>0x</th><td>1919051</td><td>5339599</td><td>7258650</td><td>72.5865</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>74</td><th>0x</th><td>3349773</td><td>7322213</td><td>10671986</td><td>106.7199</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>315</td><th>0x</th><td>4329949</td><td>4302133</td><td>8632082</td><td>86.3208</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>94</td><th>0x</th><td>3048781</td><td>6498607</td><td>9547388</td><td>95.4739</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>21</td><th>0x</th><td>505741</td><td>-1</td><td>505740</td><td>5.0574</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>76</td><th>0x</th><td>1367181</td><td>792132</td><td>2159313</td><td>21.5931</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 100,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>615</td><th>5.69x</th><td>3448605</td><td>8914522</td><td>12363127</td><td>123.6313</td><th>5.97x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>366</td><th>3.39x</th><td>7430034</td><td>15735840</td><td>23165874</td><td>231.6587</td><th>11.18x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>758</td><th>7.02x</th><td>10864572</td><td>7620900</td><td>18485472</td><td>184.8547</td><th>8.92x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>366</td><th>3.39x</th><td>6246234</td><td>17097487</td><td>23343721</td><td>233.4372</td><th>11.26x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>108</td><th>1x</th><td>939943</td><td>1132591</td><td>2072534</td><td>20.7253</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>253</td><th>2.34x</th><td>3408792</td><td>2164635</td><td>5573427</td><td>55.7343</td><th>2.69x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 100,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>452</td><th>11.3x</th><td>2952361</td><td>7555812</td><td>10508173</td><td>105.0817</td><th>16.51x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>187</td><th>4.68x</th><td>4598986</td><td>11735447</td><td>16334433</td><td>163.3443</td><th>25.66x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>508</td><th>12.7x</th><td>5809066</td><td>5837964</td><td>11647030</td><td>116.4703</td><th>18.29x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>189</td><th>4.72x</th><td>3379758</td><td>9760630</td><td>13140388</td><td>131.4039</td><th>20.64x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>40</td><th>1x</th><td>485410</td><td>151245</td><td>636655</td><td>6.3666</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>163</td><th>4.08x</th><td>1420158</td><td>1312606</td><td>2732764</td><td>27.3276</td><th>4.29x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 100,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>209</td><th>19x</th><td>1363249</td><td>4046208</td><td>5409457</td><td>54.0946</td><th>12.46x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>3.45x</th><td>2594218</td><td>5190191</td><td>7784409</td><td>77.8441</td><th>17.93x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>223</td><th>20.27x</th><td>2964244</td><td>3197850</td><td>6162094</td><td>61.6209</td><th>14.19x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>38</td><th>3.45x</th><td>1246968</td><td>3125257</td><td>4372225</td><td>43.7222</td><th>10.07x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>11</td><th>1x</th><td>278850</td><td>155346</td><td>434196</td><td>4.3420</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>32</td><th>2.91x</th><td>636392</td><td>236353</td><td>872745</td><td>8.7274</td><th>2.01x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 100,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>235</td><th>6.91x</th><td>1601458</td><td>4451429</td><td>6052887</td><td>60.5289</td><th>9.03x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>64</td><th>1.88x</th><td>2868581</td><td>5979425</td><td>8848006</td><td>88.4801</td><th>13.19x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>269</td><th>7.91x</th><td>3520828</td><td>3576470</td><td>7097298</td><td>70.9730</td><th>10.58x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>64</td><th>1.88x</th><td>1544546</td><td>3721199</td><td>5265745</td><td>52.6574</td><th>7.85x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>34</td><th>1x</th><td>329308</td><td>341300</td><td>670608</td><td>6.7061</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>54</td><th>1.59x</th><td>747297</td><td>349361</td><td>1096658</td><td>10.9666</td><th>1.64x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 100,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>497</td><th>4.56x</th><td>2893293</td><td>9008317</td><td>11901610</td><td>119.0161</td><th>7.34x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>255</td><th>2.34x</th><td>4355482</td><td>12363666</td><td>16719148</td><td>167.1915</td><th>10.31x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>611</td><th>5.61x</th><td>7130402</td><td>6923117</td><td>14053519</td><td>140.5352</td><th>8.67x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>255</td><th>2.34x</th><td>3048605</td><td>7817877</td><td>10866482</td><td>108.6648</td><th>6.70x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>109</td><th>1x</th><td>765976</td><td>855188</td><td>1621164</td><td>16.2116</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>180</td><th>1.65x</th><td>1323815</td><td>1063165</td><td>2386980</td><td>23.8698</td><th>1.47x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 100,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>248</td><th>13.05x</th><td>1580426</td><td>4499745</td><td>6080171</td><td>60.8017</td><th>9.82x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>61</td><th>3.21x</th><td>2798027</td><td>6329960</td><td>9127987</td><td>91.2799</td><th>14.74x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>268</td><th>14.11x</th><td>3522174</td><td>4025080</td><td>7547254</td><td>75.4725</td><th>12.19x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>61</td><th>3.21x</th><td>1506866</td><td>3427085</td><td>4933951</td><td>49.3395</td><th>7.97x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>19</td><th>1x</th><td>322268</td><td>296802</td><td>619070</td><td>6.1907</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>51</td><th>2.68x</th><td>746254</td><td>355599</td><td>1101853</td><td>11.0185</td><th>1.78x</th></tr>
</tbody>
</table>
</body>
</html>

